home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / A-Monthly Disks / (c)abh.d64 / credit-card-ctrl (.txt) < prev    next >
Commodore BASIC  |  2007-02-04  |  8KB  |  310 lines

  1. 100 REM CREDIT CARD CTRL
  2. 110 REM G. ROGER GATHERS 12/1/88
  3. 120 POKE 53280,0:POKE 53281,0:POKE 646,13
  4. 130 PRINT CHR$(147):FOR T=1 TO 10:PRINT:NEXT T
  5. 140 PRINT TAB(10)"CREDIT CARD CONTROL"
  6. 150 PRINT TAB(10)"-------------------"
  7. 160 FOR T= 1 TO 1000:NEXT T
  8. 170 N=100:DIM D$(N),B$(N),E$(N),F$(N),L$(N),P$(N)
  9. 180 PRINT CHR$(147)
  10. 190 FOR I = 1 TO 6:PRINT:NEXT I
  11. 200 POKE 646,7
  12. 210 PRINT TAB(14)"***MENU***":PRINT
  13. 220 POKE 646,3
  14. 230 PRINT TAB(6)"1 - DISPLAY CREDIT CARD LIST"
  15. 240 PRINT TAB(6)"2 - CREATE/ADD CREDIT CARD DATA"
  16. 250 PRINT TAB(6)"3 - REPORT LOST OR DAMAGED CARDS"
  17. 260 PRINT TAB(6)"4 - DELETE CARDS"
  18. 270 PRINT TAB(6)"5 - LIST FILE ON PRINTER"
  19. 280 PRINT TAB(6)"6 - DISPLAY FULL DETAIL ON CARDS"
  20. 285 PRINT TAB(6)"7 - EDIT FILES"
  21. 290 PRINT TAB(6)"8 - EXIT PROGRAM"
  22. 300 POKE 646,7
  23. 310 PRINT:PRINT TAB(12)"ENTER SELECTION[146]"
  24. 315 PRINT:PRINT
  25. 320 GET A$:IF A$="" THEN 320
  26. 330 IF VAL(A$)>8 THEN PRINT TAB(13)"1-8 0NLY":FOR T=1 TO 900:NEXT T:GOTO 180
  27. 350 ON VAL(A$) GOTO 1000,2000,3000,4000,5000,6000,7000,360
  28. 360 END
  29. 1000 REM DISPLAY CREDIT CARD LIST
  30. 1010 GOSUB 8000:REM READ FILE
  31. 1020 PRINT CHR$(147):PRINT
  32. 1030 POKE 646,7
  33. 1040 PRINT "CREDIT CARDS ON FILE:":PRINT
  34. 1050 POKE 646,13
  35. 1060 PRINT "NAME[146]"TAB(13)"ACCT. #[146]"TAB(30)"EXP. DATE[146]"
  36. 1070 PRINT"-----"TAB(13)"-------"TAB(30)"---------"
  37. 1080 K1=0:POKE 646,3
  38. 1090 FOR I = 1 TO N
  39. 1110 IF D$(I)="END" THEN 1200
  40. 1120 IF K1<15 THEN 1170
  41. 1125 POKE 646,7
  42. 1130 PRINT:PRINT TAB(8)"PRESS RETURN[146] TO CONTINUE":POKE 646,3:PRINT
  43. 1140 GET A$:IF A$="" THEN 1140
  44. 1150 IF A$<>CHR$(13) THEN 1140
  45. 1160 K1=0
  46. 1170 PRINT D$(I);TAB(13);B$(I);TAB(34);E$(I)
  47. 1180 K1=K1+1
  48. 1190 NEXT I
  49. 1200 PRINT:POKE 646,13:PRINT "END OF FILE":PRINT
  50. 1210 POKE 646,7
  51. 1220 PRINT TAB(12)"PRESS M FOR MENU"
  52. 1230 GET A$:IF A$="" THEN 1230
  53. 1240 IF A$<>"M" THEN 1230
  54. 1250 GOTO 180:REM RETURN TO MENU
  55. 2000 REM CREATE/ADD CREDIT DARD DATA
  56. 2010 L=1:PRINT CHR$(147):FOR I=1 TO 10:PRINT:NEXT I
  57. 2020 POKE 646,7
  58. 2030 PRINT:PRINT"A[146]DD TO EXISTING FILE"
  59. 2040 PRINT"R[146]EW FILE":PRINT"R[146]ETURN TO MENU"
  60. 2050 GET A$:IF A$="" THEN 2050
  61. 2060 IF A$="N" THEN 2120
  62. 2070 IF A$="A" THEN 2110
  63. 2080 IF A$="R" THEN 180
  64. 2090 POKE 646,5
  65. 2100 PRINT "ANSWER A, N, OR R":POKE 646,7:GOTO 2060
  66. 2110 GOSUB 8000:L=I:REM READ FILE & SET POINTER FOR NEXT ENTRY
  67. 2120 OPEN 2,0:PRINT CHR$(147)
  68. 2130 PRINT"  USE END TO FINISH DATA ENTRY  [146]":PRINT
  69. 2140 FOR K=L TO N
  70. 2150 PRINT "ENTRY # ";K:PRINT
  71. 2160 PRINT"CARD NAME: ";:POKE 646,3:INPUT#2,D$(K):POKE 646,7:PRINT
  72. 2170 IF D$(K)="END" THEN 2300
  73. 2180 PRINT:PRINT"ACCT, #: ";:POKE 646,3:INPUT#2,B$(K):POKE 646,7:PRINT
  74. 2190 PRINT:PRINT"EXP. DATE: ";:POKE 646,3:INPUT#2,E$(K):POKE 646,7:PRINT
  75. 2200 PRINT:PRINT"COMPANY P.O. OF STREET ADDRESS: ";:POKE 646,3
  76. 2210 INPUT#2,F$(K):POKE 646,7:PRINT
  77. 2220 PRINT:PRINT"CITY, STATE & ZIP (DO NOT USE COMMA):";:POKE 646,3
  78. 2230 INPUT#2,L$(K):POKE 646,7:PRINT
  79. 2240 PRINT:PRINT"PHONE NUMBER: ";:POKE 646,3
  80. 2245 INPUT#2,P$(K):POKE 646,7:PRINT
  81. 2250 PRINT:PRINT"IS DATA CORRECT(Y/N)?"
  82. 2260 GOSUB 12000:ON VAL(A$) GOTO 2270,2280
  83. 2270 PRINT:PRINT:GOTO 2290
  84. 2280 (null) TO 2150
  85. 2290 NEXT K
  86. 2300 CLOSE 2
  87. 2310 NC=K-1
  88. 2320 GOSUB 9000:REM WRITE THE FILE
  89. 2330 PRINT CHR$(147):PRINT"DO YOU WANT A BACKUP COPY (Y/N)?"
  90. 2340 GOSUB 12000:ON VAL(A$) GOTO 2320,2350
  91. 2350 GOTO 180:REM RETURN TO MENU
  92. 3000 REM REPORT LOST OF DAMAGED CARDS
  93. 3010 PRINT CHR$(147):OPEN 2,0:PRINT
  94. 3020 PRINT "YOUR NAME:[146]";:POKE 646,3:INPUT#2,YN$:POKE 646,7
  95. 3025 PRINT:PRINT
  96. 3030 PRINT "STREET OR POST OFFICE:[146]";:POKE 646,3:INPUT#2,MA$:POKE 646,7
  97. 3035 PRINT:PRINT
  98. 3040 PRINT "CITY:[146]";:POKE 646,3:INPUT#2,CI$:POKE 646,7
  99. 3045 PRINT:PRINT
  100. 3050 PRINT "STATE & ZIP CODE:[146]";:POKE 646,3:INPUT#2,SZ$:POKE 646,7
  101. 3055 PRINT:PRINT
  102. 3060 PRINT "TODAY'S DATE (EX DEC 7 1988):[146]";:POKE 646,3:INPUT#2,TD$:POKE 646,7
  103. 3065 PRINT:PRINT
  104. 3070 CLOSE 2
  105. 3080 GOSUB 8000: REM READ FILE
  106. 3090 FOR I=1 TO N
  107. 3100 POKE 646,7:IF D$(I)="END" THEN 3210
  108. 3110 PRINT:PRINT "DO YOU WANT A REPORT FOR:";:POKE 646,3:PRINT,D$(I)
  109. 3120 POKE 646,7:GOSUB 12000:ON VAL(A$) GOTO 3130,3200
  110. 3130 PRINT:POKE 646,7:PRINT "DO YOU WANT THE REPORTING PHONE NUMBER?"
  111. 3140 GOSUB 12000:ON VAL(A$) GOTO 3150,3160
  112. 3150 POKE 646,3:PRINT P$(I):POKE 646,7
  113. 3160 PRINT:PRINT "DO YOU WANT TO MAKE A WRITTEN REPORT?"
  114. 3170 GOSUB 12000:ON VAL(A$) GOTO 3180,3200
  115. 3180 PRINT:PRINT "IS CARD LOST OR DESTROYED";:POKE 646,3:INPUT W$:PRINT:PRINT
  116. 3190 GOSUB 10000:REM PRINT THE LETTER
  117. 3200 NEXT I
  118. 3210 PRINT "END OF FILE"
  119. 3220 (null) TO 180: REM RETURN TO MENU
  120. 4000 REM DELETE CARDS
  121. 4010 GOSUB 8000:REM READ FILE
  122. 4020 I=1:POKE 646,3
  123. 4030 PRINT:PRINT D$(I);TAB(10);B$(I):POKE 646,7
  124. 4040 PRINT:PRINT TAB(8)"DELETE THIS CARD?":POKE 646,3
  125. 4050 GOSUB 12000:ON VAL(A$) GOTO 4060,4110
  126. 4060 FOR J=I+1 TO NC+1
  127. 4070 D$(J-1)=D$(J):B$(J-1)=B$(J):E$(J-1)=E$(J)
  128. 4080 F$(J-1)=F$(J):L$(J-1)=L$(J):P$(J-1)=P$(J)
  129. 4090 NEXT J
  130. 4100 NC=NC-1:I=I-1
  131. 4110 I=I+1:IF I>NC THEN 4130
  132. 4120 (null) TO 4030
  133. 4130 POKE 646,7:GOSUB 9000:REM WRITE NEW FILE
  134. 4140 GOTO 180:REM RETURN TO MENU
  135. 5000 REM LIST FILE ON PRINTER
  136. 5010 GOSUB 8000:OPEN 4,4:REM READ FILE & OPEN PRINTER
  137. 5020 PRINT#4,"CREDIT CARDS ON FILE TO DATE":PRINT#4
  138. 5025 PRINT#4,"FILE NAME: ";FI$:PRINT#4
  139. 5030 FOR I=1 TO NC
  140. 5040 IF D$(I)="END" THEN 5130
  141. 5050 PRINT#4,"NAME: ",D$(I)
  142. 5060 PRINT#4,"ACCT. #: ",B$(I)
  143. 5070 PRINT#4,"EXP. DATE: ", E$(I)
  144. 5080 PRINT#4,"COMPANY ADDRESS"
  145. 5090 PRINT#4,F$(I)
  146. 5100 PRINT#4,L$(I)
  147. 5110 PRINT#4,"REPORTING PHONE # ",P$(I):PRINT#4
  148. 5120 NEXT I
  149. 5130 PRINT#4,"END OF FILE":PRINT#4,CHR$(12)
  150. 5140 CLOSE 4
  151. 5150 PRINT:PRINT ," PRESS M FOR MENU "
  152. 5160 GET A$:IF A$="" THEN 5160
  153. 5170 IF A$<>"M" THEN 5160
  154. 5180 (null) TO 180:REM RETURN TO MENU
  155. 6000 REM SHOW FULL DETAILS OF EACH CARD
  156. 6010 GOSUB 8000:REM READ FILES
  157. 6020 PRINT CHR$(147):PRINT
  158. 6030 PRINT "CREDIT CARDS ON FILE (FULL DETAILS):":PRINT
  159. 6040 FOR I=1 TO N
  160. 6050 POKE 646,3
  161. 6060 IF D$(I)="END" THEN 6170
  162. 6070 POKE 646,13:PRINT "NAME: ";:POKE 646,3:PRINT,D$(I):PRINT
  163. 6080 POKE 646,13:PRINT "ACCT. #: ";:POKE 646,3:PRINT,B$(I):PRINT
  164. 6090 POKE 646,13:PRINT "EXP. DATE: ";:POKE 646,3:PRINT,E$(I):PRINT
  165. 6100 POKE 646,13:PRINT "COMPANY ADDR: ";:POKE 646,3:PRINT,F$(I):PRINT
  166. 6110 POKE 646,13:PRINT "CITY, STATE & ZIP: ";:POKE 646,3:PRINT,L$(I):PRINT
  167. 6115 POKE 646,13
  168. 6120 PRINT "REPORTING PHONE #: ";:POKE 646,3:PRINT,P$(I):PRINT:POKE 646,7
  169. 6130 PRINT:PRINT TAB(8)"PRESS RETURN[146] TO CONTINUE":PRINT
  170. 6140 GET A$:IF A$="" THEN 6140
  171. 6150 IF A$<>CHR$(13) THEN 6140
  172. 6160 NEXT I
  173. 6170 PRINT:POKE 646,13:PRINT "END OF FILE":PRINT
  174. 6180 POKE 646,7
  175. 6190 PRINT TAB(12)"PRESS M FOR MENU"
  176. 6200 GET A$:IF A$="" THEN 6200
  177. 6210 IF A$<>"M" THEN 6200
  178. 6220 (null) TO 180:REM RETURN TO MENU
  179. 7000 REM EDIT FILES
  180. 7010 GOSUB 8000:REM READ FILE
  181. 7020 PRINT CHR$(147):PRINT:POKE 646,7
  182. 7025 PRINT,"CARD NAME TO EDIT: ";:POKE 646,3:INPUT CN$:POKE 646,7:PRINT
  183. 7030 PRINT,"  TYPE EITHER NEW INFORMATION "
  184. 7035 PRINT,"   OR RETURN FOR EACH ITEM    ":PRINT
  185. 7040 FOR I=1 TO N
  186. 7050 POKE 646,13
  187. 7060 IF D$(I)="END" THEN 7290
  188. 7065 IF D$(I)<>CN$ THEN 7280
  189. 7070 PRINT,"NAME: ";:POKE 646,3:PRINT,D$(I);:INPUT NE$
  190. 7080 IF NE$<>"" THEN D$(I)=NE$
  191. 7090 POKE 646,13:PRINT:NE$=""
  192. 7100 PRINT,"ACCT, #: ";:POKE 646,3:PRINT,B$(I);:INPUT NE$
  193. 7110 IF NE$<>"" THEN B$(I)=NE$
  194. 7120 POKE 646,13:PRINT:NE$=""
  195. 7130 PRINT,"EXP. DATE: ";:POKE 646,3:PRINT,E$(I);:INPUT NE$
  196. 7140 IF NE$<>"" THEN E$(I)=NE$
  197. 7150 POKE 646,13:PRINT:NE$=""
  198. 7160 PRINT,"COMPANY ADDR: ";:POKE 646,3:PRINT,F$(I);:INPUT NE$
  199. 7170 IF NE$<>"" THEN F$(I)=NE$
  200. 7180 POKE 646,13:PRINT:NE$=""
  201. 7190 PRINT,"CITY, STATE & ZIP: ";:POKE 646,3:PRINT,L$(I);:INPUT NE$
  202. 7200 IF NE$<>"" THEN L$(I)=NE$
  203. 7210 POKE 646,13:PRINT:NE$=""
  204. 7220 PRINT,"REPORTING PHONE #: ";:POKE646,3:PRINT,P$(I);:INPUT NE$
  205. 7230 IF NE$<>"" THEN P$(I)=NE$
  206. 7240 POKE 646,7:PRINT:NE$=""
  207. 7250 PRINT TAB(8)"PRESSRETURN[146] TO CONTINUE":PRINT
  208. 7260 GET A$:IF A$="" THEN 7260
  209. 7270 IF A$<>CHR$(13) THEN 7260
  210. 7280 NEXT I
  211. 7290 PRINT:POKE 646,13:PRINT,"END OF FILE":PRINT
  212. 7295 FOR T=1 TO 1000:NEXT T
  213. 7300 POKE 646,7
  214. 7310 NC=I-1
  215. 7320 GOSUB 9000:REM WRITE THE FILE
  216. 7330 PRINT CHR$(147):PRINT,"DO YOU WANT A BACKUP COPY (Y/N)?"
  217. 7340 GOSUB 12000:ON VAL(A$) GOTO 7320,7350
  218. 7350 (null) TO 180:REM RETURN TO MENU
  219. 8000 REM READ FILE SUBROUTINE
  220. 8010 PRINT CHR$(147):PRINT:PRINT
  221. 8020 INPUT "INPUT FILE NAME[146]";FI$:PRINT
  222. 8030 PRINT "  INSERT SOURCE FILE AND PRESS RETURN  [146]"
  223. 8040 GET A$:IF A$="" THEN 8040
  224. 8050 IF A$<>CHR$(13) THEN 8040
  225. 8060 PRINT:PRINT "T[146]APE OF D[146]ISK":PRINT
  226. 8070 GET A$:IF A$="" THEN 8070
  227. 8080 IF A$="T" THEN OPEN 1,1,0,FI$:DR$="T":GOTO 8120
  228. 8090 IF A$="D" THEN OPEN1,8,8,FI$+",S,R":DR$="D":GOTO 8120
  229. 8100 POKE 646,5
  230. 8110 PRINT "ANSWER T OR D":POKE 646,7:GOTO 8070
  231. 8120 PRINT CHR$(147):PRINT
  232. 8130 POKE 646,13
  233. 8140 PRINT "READING FILE"
  234. 8150 POKE 646,7
  235. 8160 FOR I=1 TO N
  236. 8170 INPUT#1,D$(I)
  237. 8180 IF D$(I)="END" THEN 8210
  238. 8190 INPUT#1,B$(I),E$(I),F$(I),L$(I),P$(I)
  239. 8200 NEXT I
  240. 8210 CLOSE 1:NC=I-1
  241. 8220 IF DR$="T" THEN 8240
  242. 8230 GOSUB 11000
  243. 8240 RETURN
  244. 9000 REM WRITE FILE SUBROUTINE
  245. 9010 PRINT CHR$(147):PRINT
  246. 9020 INPUT "OUTPUT FILE NAME[146]";FI$:PRINT
  247. 9030 PRINT " INSERT FILE AND PRESS RETURN[146]"
  248. 9040 GET A$:IFA$="" THEN 9040
  249. 9050 IF A$<>CHR$(13) THEN 9040
  250. 9060 PRINT:PRINT "T[146]APE OF D[146]ISK":PRINT
  251. 9070 GET A$:IF A$="" THEN 9070
  252. 9080 IF A$="T" THEN OPEN 3,1,0,FI$:DR$="T":GOTO 9120
  253. 9090 IF A$="D" THEN OPEN 3,8,8,"@0:"+FI$+",S,W":DR$="D":GOTO 9120
  254. 9100 POKE 646,5
  255. 9110 PRINT "ANSWER T OR D":POKE 646,7:GOTO 9070
  256. 9120 PRINT CHR$(147):POKE 646,13:PRINT "WRITING OUTPUT FILE"
  257. 9130 POKE 646,7
  258. 9140 FOR I=1 TO NC
  259. 9150 PRINT#3,D$(I):PRINT#3,B$(I):PRINT#3,E$(I)
  260. 9160 PRINT#3,F$(I):PRINT#3,L$(I):PRINT#3,P$(I)
  261. 9170 NEXT I
  262. 9180 D$(NC+1)="END":PRINT#3,D$(NC+1)
  263. 9190 CLOSE 3
  264. 9200 IF DR$="T" THEN 9220
  265. 9210 GOSUB 11000
  266. 9220 RETURN
  267. 10000 REM LETTER PRINTING SUBROUTINE
  268. 10010 OPEN 4,4
  269. 10020 PRINT#4:SN$="SINCERELY"
  270. 10030 PRINT#4,TAB(50);MA$
  271. 10035 T2=60-LEN(CI$):T3=10-LEN(SZ$)
  272. 10040 PRINT#4,TAB(T2);CI$;TAB(T3);SZ$
  273. 10050 PRINT#4,TAB(50);TD$
  274. 10060 PRINT#4, D$(I)
  275. 10070 PRINT#4, F$(I)
  276. 10080 PRINT#4, L$(I)
  277. 10090 PRINT#4
  278. 10100 PRINT#4,"RE: ACCOUNT # ";B$(I):PRINT#4
  279. 10110 PRINT#4,"DEAR SIR:":PRINT#4
  280. 10120 PRINT#4,TAB(5)"IN REGARD TO THE ABOVE ACCOUNT,";
  281. 10130 PRINT#4," I AM REPORTING THAT MY CARD WAS":PRINT#4
  282. 10140 PRINT#4, W$;" ON OR ABOUT THE ABOVE DATE.":PRINT#4
  283. 10150 PRINT#4,TAB(5)"PLEASE TAKE ANY NECESSARY ACTION";
  284. 10160 PRINT#4," TO INSURE THAT THERE IS NO":PRINT#4
  285. 10170 PRINT#4,"UNAUTHORIZED USE OF THIS CARD,";
  286. 10180 PRINT#4," AND PLEASE ISSUE A REPLACEMENT AS":PRINT#4
  287. 10190 PRINT#4,"SOON AS POSSIBLE.":PRINT#4
  288. 10200 PRINT#4,TAB(5)"PLEASE CONTACT ME IF";
  289. 10210 PRINT#4," ADDITIONAL INFORMATION IS NEEDED."
  290. 10220 FOR K=1 TO 4:PRINT#4:NEXT K
  291. 10230 PRINT#4,TAB(50);SN$
  292. 10240 FOR K=1 TO 4:PRINT#4:NEXT K
  293. 10250 PRINT#4,TAB(50);YN$
  294. 10260 PRINT#4,CHR$(12):CLOSE 4
  295. 10270 RETURN
  296. 11000 REM CHECK DISK SUBROUTINE
  297. 11010 OPEN 15,8,15
  298. 11020 INPUT#15,EN,EM$,ET,ES
  299. 11030 IF EN>1 AND EN<>50 THEN PRINT EN,EM$,ET,ES:STOP
  300. 11040 CLOSE 15
  301. 11050 RETURN
  302. 12000 REM YES/NO SUBROUTINE
  303. 12010 GET A$:IF A$="" THEN 12010
  304. 12020 IF A$="Y" THEN 12060
  305. 12030 IF A$="N" THEN 12070
  306. 12040 POKE 646,5
  307. 12050 PRINT:PRINT"ANSWER Y OR N":POKE 646,3:GOTO 12010
  308. 12060 A$="1":RETURN
  309. 12070 A$="2":RETURN
  310.